System for estimating attitude of leg type moving robot itself

ABSTRACT

A system for estimating an acceleration of a motion of an accelerometer itself that is generated by a motion of a robot  1 , using amounts of motional states of the robot, including a desired motion of a desired gait, a detected value of a displacement of a joint, and a desired value of the displacement of the joint of the robot  1  having a gyro sensor (angular velocity sensor) and an accelerometer installed on a body  3  or the like thereof, and for estimating an actual posture of a predetermined part, such as the body  3 , on the basis of the acceleration of the motion, the detected acceleration value of the accelerometer, and the angular velocity detected value of the angular velocity sensor. An error of the estimated value of the actual posture of the predetermined part is estimated on the basis of a difference between the detected acceleration value and the motional acceleration, and then an input of an integrating means for integrating angular velocity detected values is corrected to bring the aforesaid error close to zero so as to obtain an output of the integrating means as an estimated value of the actual posture. Thus, an actual posture of a predetermined part is accurately estimated.

TECHNICAL FIELD

The present invention relates to a system for estimating an attitude ofa leg type moving robot itself.

BACKGROUND ART

In general, a leg type moving robot, such as a bipedal moving robot, hasa clinometer mounted on its body, and the posture of the robot iscontrolled so that an output of the clinometer (an inclination angle ofthe body relative to a vertical direction) is converged to aninclination angle of the body of a desired gait.

The clinometer is comprised of a gyro sensor for detecting an angularvelocity of the body and an accelerometer (or a vertical indicator, suchas a pendulum) for detecting a vertical direction (that is, thegravitational direction). The clinometer is basically adapted toestimate the inclination angle of the body by integrating angularvelocities detected by the gyro sensor; however, simply integrating themaccumulates errors (or a so-called “drift” is generated). For thisreason, detected values of the accelerometer have been used to correctan estimated inclination angle obtained by integration. To be morespecific, a difference between an inclination angle relative to thedirection of acceleration detected by the accelerometer and aninclination angle obtained by subjecting a detected value of the gyrosensor to an integrator is determined, and then a correction amountbased on the difference (a sum of a value obtained by multiplying thedifference by a predetermined gain and a value obtained by integratingthe difference and multiplying it by a predetermined gain) isadditionally supplied to the integrator so as to correct the inclinationangle.

According to this method, however, there has been a possibility ofopposite effect in that an error of an estimated inclination angle isincreased by the aforesaid correction when the body of the robot isseverely accelerated or decelerated during travel or the like, becauseacceleration from a motion of the body is added to an accelerationdetected by the accelerometer in addition to a gravitationalacceleration, preventing accurate detection of a direction of thegravitational acceleration.

Hereinafter, an inclination and a direction of a certain representativepart, such as a body, will be referred to as “posture” as a genericterm. The “inclination” refers to an angle formed relative to a verticaldirection. The “direction” refers to a direction of a vector obtained byprojecting the vector that indicates the front direction of arepresentative part onto a horizontal surface.

Generally, a representative part refers to a part provided with aclinometer composed of a gyro sensor and an accelerometer. Other partsmay be specified as representative parts if joint displacementdetectors, such as encoders, or displacement control actuators areprovided on individual joints between the parts and a part with theclinometer, so that the inclinations of the parts can be calculated. Forexample, even if a head connected by a neck with a joint is providedwith a gyro sensor and/or an accelerometer, a body may be defined as arepresentative part. In an embodiment to be discussed hereinafter, abody will be specified as a representative part.

Furthermore, a set of displacements of all joints is generally referredto as a posture. However, this will not mean a “posture” in the presentembodiment unless otherwise specified.

In a conventional leg type moving robot, there has been a problem inaddition to the aforesaid problem. Reaction forces generated when therobot swings its legs while it is moving cause rotational slippages(spins) to take place between its feet and a floor because of frictionalforces between the feet (distal parts of the legs) and the floor exceedsits limit. As a result, the posture of the entire robot rotates about avertical axis, deviating from the direction of a desired gait.

Complementarily, the body is not necessarily maintained vertically(upright) at all times to generate only the desired gait for straightwalking. Even in the desired gait, the entire robot or the body swingsor inclines longitudinally or laterally. In other words, the rotation ofthe entire posture (or the rotation of the posture of a representativepart, such as the body) exists also in the desired gait. In the presentdescription, therefore, the rotation of a posture in a desired gait willbe referred to as a desired posture rotation. A phenomenon to be mainlydiscussed in the present description is a rotation error of an actualposture of the entire robot (or a rotation of a posture of arepresentative part, such as a body) from the above desired posturerotation. Strictly speaking, the phenomenon should be referred to as“perturbation from a desired posture rotation” or “posture rotationperturbation”. This, however, will be abbreviated to “posture rotation”hereinafter unless there is a possibility of confusion with a desiredposture rotation.

Hereinafter, a phenomenon in which the entire robot posture-rotatesabout a vertical axis and deviates from a desired gait direction will bereferred to, in particular, as a spin.

The present invention has been made with a view based on the backgroundexplained above, and it is an object thereof to provide a system forestimating a posture that enables a leg type moving robot to accuratelyestimate its own posture. In particular, it is an object of the presentinvention to provide a system for estimating a posture that enables aleg type moving robot to accurately estimate its own posture even in astate wherein an acceleration is considerably changing in a horizontaldirection or a vertical direction or in a state wherein the entire robotis undergoing a posture rotation (or a spin) due to a rotationalslippage or the like between a foot sole of the robot and a floor.

DISCLOSURE OF INVENTION

To fulfill the aforesaid object, according to a first invention, thereis provided a system for estimating a posture of a leg type moving robotcontrolled to follow a determined desired gait, comprising a postureangular velocity detecting means for detecting or estimating an actualposture angular velocity of a predetermined part of the robot, anaccelerometer mounted on the robot, a motional acceleration estimatingmeans for determining an estimated motional acceleration as an estimatedvalue of an acceleration of the accelerometer itself that is generatedby a motion of the robot by using a motional state amount of the robotthat includes at least one of a desired motion of the desired gait, adetected displacement value of a joint of the robot, and a desireddisplacement value of the joint, and a posture estimating means forestimating an actual posture of the predetermined part on the basis ofat least a detected acceleration value by the accelerometer, theestimated motional acceleration, and the detected or estimated actualposture angular velocity.

According to the first invention, an estimated motional acceleration asan estimated value of an acceleration of the accelerometer itself thatis generated by a motion of the robot is determined, using a motionalstate amount of the robot that includes at least one of a desired motionof the desired gait, a detected displacement value of a joint of therobot, and a desired displacement value of the joint. More specifically,a motional trajectory of the position of the accelerometer can begeometrically determined using the motional state amount, so that amotional acceleration of the accelerometer itself can be estimated fromthe motional trajectory. Then, an actual posture of the predeterminedpart is estimated on the basis of the estimated motional acceleration, adetected acceleration value by the accelerometer (a resultant value of agravitational acceleration and a motional acceleration), and an actualposture angular velocity detected or estimated by the posture angularvelocity detecting means. This makes it possible to estimate an actualposture of the predetermined part by correcting the detected orestimated actual posture angular velocity or an integrated value thereofwhile making up for influences of a motional acceleration included inthe detected acceleration value by the estimated motional acceleration.As a result, the actual posture of the predetermined part, whichindicates the posture of the robot itself, can be accurately estimated.

According to a second invention, there is provided a system forestimating a posture of a leg type moving robot controlled to follow adetermined desired gait, comprising an accelerometer mounted on therobot, a posture angular velocity detecting means for detecting orestimating an actual posture angular velocity of a predetermined part ofthe robot, a posture estimating means for determining an estimatedposture angle value as an estimated value of an actual posture of thepredetermined part on the basis of at least the detected or estimatedactual posture angular velocity, a posture rotational error calculatingmeans for determining a temporal variation of a posture rotational erroras a posture rotational error variation, the posture rotational errorvariation indicating a difference between the estimated posture anglevalue and a desired posture angle of the predetermined part in thedesired gait, a rotational center determining means for determining arotational center of a change in the posture rotational error, and amotional acceleration estimating means for determining an estimatedmotional acceleration as an estimated value of an acceleration of theaccelerometer itself generated by a motion of the robot, assuming thatthe robot rotates about the rotational center with the posturerotational error variation, wherein the posture estimating meansdetermines the estimated posture angle value while correcting it on thebasis of at least a detected acceleration value by the accelerometer andthe estimated motional acceleration.

According to the second invention, when determining the estimatedmotional acceleration, it is assumed that a variation in a certainposture rotational error, which is a difference between the estimatedposture angle value and a desired posture angle of the predeterminedpart in the desired gait, is equivalent to a rotation of the entirerobot about a certain rotational center with the posture rotationalerror variation. As a matter of fact, a rotational slippage (spin)taking place between a foot (a distal portion of a leg) of the robot anda floor, for example, would appear in the form of a variation in theposture rotational error. Furthermore, according to the secondinvention, based on the aforesaid assumption, an estimated motionalacceleration as an estimated value of an acceleration of theaccelerometer itself generated by a motion of the robot is determined.Therefore, an estimated motional acceleration providing an estimatedvalue of the motional acceleration of the accelerometer itself can bedetermined by quantitatively determining an actual motion of theaccelerometer itself generated by the aforesaid rotational slippage orthe like. As a result, an accurate estimated motional acceleration canbe determined.

At this time, to determine an estimated motional acceleration, aposition of the accelerometer (a position of a part provided with theaccelerometer) may be sequentially estimated on the basis of, forexample, the aforesaid assumption, and an estimated motionalacceleration may be determined on the basis of a motional trajectory ofthe position. Alternatively, for example, a position of a certainrepresentative location of the robot that is different from the partprovided with the accelerometer (a position of a certain part of therobot, a landing position where a leg comes in contact with a ground ina landing motion, etc.) is estimated on the basis of the aforesaidassumption, and then an estimated value of the position of therepresentative location and a desired gait of the robot or a detecteddisplacement value of a joint or a desired displacement value of thejoint may be used to determine a motional trajectory of the position ofthe accelerometer by geometric computation (kinematics computation) soas to determine the estimated motional acceleration from the motionaltrajectory. Complementarily, if a landing position of the robot (aposition where the robot comes in contact with a floor) or a position ofone part of the robot can be estimated, then the motional trajectory ofany position of the robot can be determined by the geometric computationdescribed above.

According to the second invention, the estimated posture angle value isdetermined while being corrected on the basis of at least a detectedacceleration value by the accelerometer and the estimated motionalacceleration determined as described above. Thus, as in the case of thefirst invention, it is possible to correct the estimated posture anglevalue while making up for influences of a motional acceleration includedin the detected acceleration value by the estimated motionalacceleration. As a result, the accuracy of an estimated posture anglevalue, which is an estimated value of an actual posture of thepredetermined part, can be improved. In other words, the actual postureof the predetermined part as the self posture of the robot can beestimated with high accuracy.

To be more specific, in the second invention, the motional accelerationestimating means includes a means for determining a second coordinatesystem formed by rotating a first coordinate system, which is acoordinate system describing the aforesaid desired gait, about theaforesaid rotational center by the posture rotational error variation.Preferably, the estimated motional acceleration is determined such thatan acceleration of the accelerometer itself observed from the firstcoordinate system that is determined from at least one of a desiredmotion of the desired gait, a detected displacement value of a joint ofthe robot, and a desired displacement value of the joint, and anacceleration of the accelerometer itself when the accelerometer movingat the estimated motional acceleration is observed from the secondcoordinate system are the same (a third invention).

According to the third invention, the estimated motional acceleration isdetermined such that an acceleration of the accelerometer itselfobserved from the first coordinate system, that is, an acceleration ofthe accelerometer itself determined from at least one of a desiredmotion, a detected displacement value of a joint of the robot, and adesired displacement value of the joint when it is assumed the robot ismoving on the first coordinate system according to the desired motion ofa desired gait or the detected displacement value of the joint or thedesired displacement value of the joint without rotational slippage orthe like, and an acceleration of the accelerometer itself when theaccelerometer in motion at the estimated motional acceleration isobserved from the second coordinate system formed by rotating the firstcoordinate system about the rotational center by the posture rotationalerror variation are the same (coordinate components of an accelerationof the accelerometer itself on each coordinate system are the same onboth coordinate systems). As a result, changes in posture rotationalerror can be properly reflected to determine an estimated motionalacceleration, which is to be an estimated value of an acceleration ofthe accelerometer itself, allowing an accurate estimated motionalacceleration to be obtained. Consequently, the estimated posture anglevalue can be properly corrected, so that the accuracy of the estimatedposture angle value can be improved.

In the first through third invention, the posture estimating means ispreferably comprised of an integrating means for determining anestimated posture angle value as an estimated value of an actual postureof the predetermined part by integrating an input that includes at leasta detected value of the posture angular velocity, a posture angle errorestimating means for estimating an error of the estimated posture anglevalue on the basis of a difference between a detected acceleration valueby the accelerometer and the estimated motional acceleration, and aninput correcting means for correcting an input of the integrating meansso as to bring the estimated error close to zero (a fourth invention).

More specifically, the difference (vector) between the detectedacceleration value by the accelerometer and the estimated motionalacceleration corresponds to a gravitational acceleration. If, however,the estimated posture angle value has an error, then the vector of thedifference is not oriented in a vertical direction on a globalcoordinate system determined from the estimated posture angle value (aglobal coordinate system determined on an assumption that the estimatedposture angle value is correct). Here, the global coordinate system is acoordinate system fixed with respect to a floor (ground) in anenvironment in which the robot moves. Hence, it is possible to estimatean error of an estimated posture angle value (past value) on the basisof the difference (vector). In the fourth invention, an input of theintegrating means is corrected to bring the estimated error close tozero, thereby correcting an estimated posture angle value, which is anoutput of the integrating means. This arrangement makes it possible toimprove the accuracy of estimated posture angle value. To correct aninput of the integrating means as described above, a manipulatedvariable is determined from, for example, the aforesaid error accordingto an appropriate feedback control law, and the manipulated variable isadditionally supplied to the integrating means.

In the first through fourth inventions described above, thepredetermined part is preferably a body (a base body to which legs areextendedly installed) of the robot (a fifth invention). This is becauseit is important to accurately determine a posture angle of the body fora robot to stably move.

In the first through fourth invention, if the predetermined part is thebody of the robot, then it is particularly preferable that the postureestimated value corrected by the posture estimating means is anestimated value of an inclination angle of the body relative to thevertical direction (a sixth invention). This is because the inclinationangle of the body relative to the vertical direction is especiallyimportant for a robot to stably move.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram showing an outline of a skeleton of anentire construction of a bipedal moving robot as a leg type moving robotin an embodiment of the present invention;

FIG. 2 is a schematic diagram schematically showing a construction of afoot portion of each leg shown in FIG. 1;

FIG. 3 and FIG. 4 are a sectional diagram viewed sideways and a bottomview, respectively, showing a detailed construction of the foot portionof each leg;

FIG. 5 is a block diagram showing a construction of a control unitprovided in the robot shown in FIG. 1; and

FIG. 6 is a block diagram showing a functional construction of thecontrol unit shown in FIG. 5.

FIG. 7 is an explanatory diagram showing a running gait of the robot;

FIGS. 8(a), (b), and (c) are graphs illustrating a floor reaction forcevertical component of a desired gait, a desired ZMP, and a settingexample of a gain for estimating a self position/posture, respectively;

FIG. 9 is a flowchart showing a processing of an essential section of acontrol unit in a first embodiment;

FIG. 10 is a flowchart showing a processing for estimating the selfposition/posture in the flowchart shown in FIG. 9; and

FIG. 11 and FIG. 12 are diagrams for explaining the processing forestimating the self position/posture in the flowchart of FIG. 9.

FIG. 13 is a block diagram showing a processing of an essential sectionof the processing for estimating the self position/posture in theflowchart of FIG. 9;

FIGS. 14(a) and (b) are diagrams for explaining the processingillustrated in FIG. 13, and

FIG. 15 is a graph showing a setting example of a gain used for theprocessing illustrated in FIG. 13.

BEST MODE FOR CARRYING OUT THE INVENTION

The following will explain a system for estimating a position of a legtype moving robot itself according to an embodiment of the presentinvention with reference to the accompanying drawings. As the leg typemoving robot, a bipedal moving robot will be taken as an example.

FIG. 1 is a schematic diagram showing a general view of a bipedal movingrobot as the leg type moving robot according to the present embodiment.

As shown in the diagram, a bipedal moving robot (hereinafter referred toas “the robot”) 1 is equipped with a pair of right and left legs (leglinks) 2, 2 provided such that they extend downward from a body (a basebody of the robot 1) 3. Both legs 2, 2 share the same construction, eachhaving six joints. The six joints of each leg are comprised of, in thefollowing order from the body 3 side, joints 10R, 10L (symbols R and Lmean correspondence to the right leg and the left leg, respectively; thesame will be applied hereinafter) for swinging (rotating) a hip(waist)(for rotating in a yaw direction relative to the body 3), joints12R, 12L for rotating the hip (waist) in a roll direction (about an Xaxis), joints 14R, 14L for rotating the hip (waist) in a pitch direction(about a Y axis), joints 16R, 16L for rotating knees in the pitchdirection, joints 18R, 18L for rotating ankles in the pitch direction,and joints 20R, 20L for rotting the ankles in the roll direction.

A foot (foot portion) 22R(L) constituting a distal portion of each leg 2is attached to the bottoms of the two joints 18R(L) and 20R(L) of theankle of each leg 2. The body 3 is installed at the uppermost top of thetwo legs 2, 2 through the intermediary of the three joints 10R(L),12R(L) and 14R(L) of the hip of each leg 2. A control unit 60 or thelike, which will be discussed in detail hereinafter, is housed insidethe body 3. For convenience of illustration, the control unit 60 isshown outside the body 3 in FIG. 1.

In each leg 2 having the aforesaid construction, a hip joint (or a waistjoint) is formed of the joint 10R(L), 12R(L) and 14R(L), the knee jointis formed of the joint 16R(L), and the ankle joint is formed of thejoints 18R(L) and 20R(L). The hip joint and the knee joint are connectedby a thigh link 24R(L), and the knee joint and the ankle joint areconnected by a crus link 26R(L).

A pair of right and left arms 5, 5 are attached to both sides of upperportions of the body 3, and a head 4 is disposed at a top end of thebody 3. These arms 5, 5 and the head 4 are not directly connected to atopic of the present invention, so that detailed explanation thereofwill be omitted.

According to the construction described above, the foot 22R(L) of eachleg 2 is given six degrees of freedom relative to the body 3. During atravel, such as walking, of the robot 1, desired motions of the two feet22R and 22L can be accomplished by driving 6*2=12 joints of the two legs2, 2 together (“*” in the present description will denote multiplicationas scalar computation, while it will denote an outer product in vectorcomputation) at appropriate angles. This arrangement enables the robot 1to arbitrarily move in a three-dimensional space.

As shown in FIG. 1, a publicly known six-axis force sensor 50 isprovided between the ankle joints 18R(L), 20R(L) and the foot 22R(L) ofeach leg 2. The six-axis force sensor 50 detects primarily whether thefoot 22R(L) of each leg 2 is in contact with a ground, and a floorreaction force (landing load) acting on each leg 2, and it outputsdetection signals of three-direction components Fx, Fy, and Fz of atranslational force of the floor reaction and three-direction componentsMx, My, and Mz of a moment to the control unit 60. Furthermore, the body3 is equipped with an inclination sensor 54 for mainly detecting aninclination (posture angle) of the body 3 relative to a Z-axis (verticaldirection (gravitational direction)) and an angular velocity thereof,and detection signals thereof are supplied from the inclination sensor54 to the control unit 60. The inclination sensor 54 is provided with athree-axis direction accelerometer and a three-axis direction gyrosensor, which are not shown, and detection signals of these sensors areused to detect an inclination and an angular velocity of the body 3 andalso used to estimate a self position/posture of the robot 1. Althoughdetailed structures are not shown, each joint of the robot 1 is providedwith an electric motor 64 (refer to FIG. 5) for driving the joint, andan encoder (rotary encoder) 65 (refer to FIG. 5) for detecting arotational amount of the electric motor 64 (a rotational angle of eachjoint). Detection signals of the encoder 65 are output from the encoder65 to the control unit 60.

Furthermore, although not shown in FIG. 1, a joystick (operating device)73 (refer to FIG. 5) is provided at an appropriate position of the robot1. The joystick 73 is constructed in such a manner that a requestregarding a gait of the robot 1, such as a request for turning the robot1 that is moving straight, is input to the control unit 60 as necessaryby operating the joystick 73.

FIG. 2 is a diagram schematically showing a basic construction of adistal portion (including each foot 22R(L)) of each leg 2 in the presentembodiment. As shown in the diagram, a spring mechanism 70 is installedbetween each foot 22R(L) and the six-axis force sensor 50, and a footsole elastic member 71 made of rubber or the like is bonded to a footsole (the bottom surface of each of the feet 22R and L). These springmechanism 70 and the foot sole elastic member 71 constitute a compliancemechanism 72. The spring mechanism 70, which will be discussed in detaillater, is constructed of a square guide member (omitted in FIG. 2),which is installed on the upper surface of the foot 22R(L), and apiston-shaped member (omitted in FIG. 2) installed adjacently to theankle joint 18R(L) (the ankle joint 20R(L) being omitted in FIG. 2) andthe six-axis force sensor 50, and housed in the guide member through theintermediary of an elastic member (rubber or spring) so that it may bejogged.

The foot 22R(L) indicated by a solid line shown in FIG. 2 is in a statewhere it is subjected to no floor reaction force. When each leg 2 issubjected to a floor reaction force, the spring mechanism 70 and thesole elastic member 71 of the compliance mechanism 72 flex, causing thefoot 22R(L) to shift to the position/posture illustrated by a dashedline in the drawing. The structure of the compliance mechanism 72 isimportant not only to ease a landing impact but also to enhancecontrollability, as explained in detail in, for example, JapaneseUnexamined Patent Publication Application 5-305584 proposed in the pastby the present applicant.

More detailed construction of the foot 22R(L) including the compliancemechanism 72 (hereinafter referred to as the foot mechanism 22R(L) insome cases) will be further explained with reference to FIG. 3 and FIG.4. FIG. 3 is a sectional view of the foot mechanism 22R(L) observedsideways, and FIG. 4 is a top plan view of the foot mechanism 22R(L)observed from its bottom surface.

The foot mechanism 22R(L) is equipped with a roughly plate-shaped footplate member 102 as a skeletal member. A front end portion (tiptoeportion) and a rear end portion (heel portion) of the foot plate member102 are slightly curved upward, the remaining portion being shaped likea flat plate. A guide member 103 having a square cross-sectional shapeis fixedly provided on an upper surface of the foot plate member 102such that an axial center thereof is vertically oriented. Inside theguide member 103, a movable plate (piston-shaped member) 104 is providedalong an inner peripheral surface of the guide member 103 such that itis virtually movable in a vertical direction, the movable plate 104being connected to the ankle joints 18R(L) and 20R(L) through theintermediary of the six-axis force sensor 50.

A rim of the bottom surface of the movable plate 104 is connected to theupper surface of the foot plate member 102 through the intermediary of aplurality of elastic members 106 made of an elastic material, such asrubber (shown as a spring in the drawing). Hence, the foot plate member102 is connected to the ankle joint 18R(L) through the intermediary ofthe elastic member 106, the movable plate 104, and the six-axis forcesensor 50. The interior of the guide member 103 (the space under themovable plate 104) is opened to the air through the intermediary of ahole or gap, which is not shown. Atmospheric air freely goes into andout of the guide member 103. The guide member 103, the movable plate104, and the elastic member 106 constitute the spring mechanism 70 shownin FIG. 2.

A ground contact member 71 serving as the sole elastic member 71 shownin FIG. 2 mentioned above is attached to a bottom surface (lowersurface) of the foot plate member 102. The ground contact member 71 isan elastic member (elastic member directly coming in contact with afloor surface) provided between the foot plate member 102 and the floorsurface with the foot mechanism 22R(L) grounded. In the presentembodiment, the ground contact member 71 is secured to four corners ofthe ground contact surface of the foot plate member 102 (both sideportions of the tiptoe of the foot plate member 102 and both sideportions of the heel).

The ground contact member 71 is formed of two layers, namely, a softlayer 107 a made of a relatively soft rubber material and a hard layer107 b made of a relatively hard rubber material, which are verticallystacked. The hard layer 107 b is provided on the lowermost surface sideas the ground contact surface coming directly in contact with a floorsurface when the leg 2 lands.

The foot mechanism 22R(L) is provided with a landing shock absorber 108in addition to the above components. The landing shock absorber 108 hasa bag-shaped member 109 attached to the bottom surface of the foot platemember 102, and a passage 110 for entry and exit of air (atmosphericair) serving as a compressive fluid in relation to the interior of thebag-shaped member 109.

The bag-shaped member 109 surrounded by the ground contact member 71 isprovided nearly in a central area of the bottom surface of the footplate member 102. The bag-shaped member 109 is made of an elasticmaterial, such as rubber, so as to be deformable. The bag-shaped member109 is shaped like a cylindrical container that is open upward, asindicated by a solid line in FIG. 3, in its natural state wherein it hasdeveloped no resilient deformation caused by an external force. Theentire peripheral edge of the opening of the bag-shaped member 109 issecured to the bottom surface of the foot plate member 102, and coveredby the foot plate member 102. The bag-shaped member 109 is provided suchthat the bottom portion of the bag-shaped member 109 juts out downwardbeyond the ground contact member 71 in its natural state wherein it isshaped like the cylindrical container. In other words, the bag-shapedmember 109 has a height (a distance from the bottom surface of the footplate member 102 to the bottom portion of the bag-shaped member 109)that is larger than the thickness of the ground contact member 71.Hence, in a state wherein the foot plate member 102 is grounded throughthe intermediary of the ground contact member 71 (the leg 2 beinglanded), the bag-shaped member 109 is compressed in the direction of theheight of the bag-shaped member 109 due to a floor reaction force, asindicated by a virtual line in FIG. 3.

In the present embodiment, the natural state wherein the bag-shapedmember 109 is shaped like the cylindrical container is a state in whichthe bag-shaped member 109 is inflated. Since the bag-shaped member 109is formed of an elastic material, it has a force for restoring itsoriginal shape (the cylindrical container shape) when compressed.

The passage 110 provides an inflow/outflow means for air to go into/outof the bag-shaped member 109. In the present embodiment, the passage 110is formed of a channel hole drilled in the foot plate member 102 toprovide communication between the interior of the bag-shaped member 109and the interior of the guide member 103. In this case, as previouslydescribed, the interior of the guide member 103 is opened to theatmosphere, meaning that the passage 110 provides communication for theinterior of the bag-shaped member 109 to the atmosphere. Thus, air inthe atmosphere is free to go into/out of the bag-shaped member 109through the intermediary of the passage 110. The bag-shaped member 109is filled with air when the bag-shaped member 109 is in its inflatedstate (natural state), the pressure therein being equivalent toatmospheric pressure. The passage 110 is a choke passage so that a fluidresistance is generated when air moves into or out of the bag-shapedmember 109.

FIG. 5 is a block diagram showing a construction of the control unit 60.The control unit 60 is comprised of a microcomputer, and includes afirst calculation unit 90 and a second calculation unit 92 constructedof CPUs, an A/D converter 80, a counter 86, a D/A converter 96, a RAM84, a ROM 94, and a bus line 82 for transferring data among them. In thecontrol unit 60, output signals of the six-axis force sensor 50, theinclination sensor 54 (an accelerometer and a rate gyro sensor), thejoystick 73, etc. of each leg 2 are converted into digital values by theA/D converter 80 and sent to the RAM 84 via the bus line 82. Outputs ofthe encoder 65 (rotary encoder) of each joint of the robot 1 aresupplied to the RAM 84 via the counter 86.

As will be discussed hereinafter, the first calculation unit 90generates desired gaits, calculates a joint angle displacement command(a displacement angle of each joint or a command value of a rotationalangle of each electric motor 64), and sends the calculation result tothe RAM 84. The second calculation unit 92 reads an actual measurementvalue of a joint angle detected on the basis of an output signal of theencoder 65 and the joint angle displacement command from the RAM 84 tocalculate a manipulated variable required for driving each joint, andoutputs the calculated variable to the electric motor 64 for drivingeach joint through the intermediary of the D/A converter 96 and a servoamplifier 64 a.

FIG. 6 is a block diagram showing the entire functional construction ofa control unit of the leg type moving robot in accordance with thepresent embodiment. A portion except for the “actual robot” in FIG. 6 isconstituted by processing functions implemented by the control unit 60(primarily the functions of the first calculation unit 90 and the secondcalculation unit 92). In the following explanation, the symbols R and Lwill be omitted unless it is necessary to discriminate right and left ofthe legs 2.

The control unit 60 is equipped with a gait generator 200 for generatingand outputting desired gaits of the robot 1 freely in real time, a selfposition/posture estimator 214, etc. The self position/posture estimator214, details of which will be discussed later, is adapted to carry outprocessing related to a characteristic portion of the present inventionand estimate a position and a posture (a position and a posture in aglobal coordinate system) of the robot 1.

A desired gait output by the gait generator 200 is constituted of adesired body position/posture trajectory (trajectory of a desiredposition and a desired posture of the body 3), a desired footposition/posture trajectory (trajectory of a desired position and adesired posture of each foot 22), a desired arm posture trajectory(trajectory of a desired posture of each arm 5), a desired total floorreaction force central point (desired ZMP) trajectory, and a desiredtotal floor reaction force trajectory. If a movable part in addition tothe legs 2 and the arms 5 is provided on the body 3, then a desiredposition/posture trajectory of the movable part is added to the desiredgait.

Complementary explanation will be added to meanings or definitions ofterms used in the embodiment of the present invention. The term“trajectory” in the above gait means a temporal change pattern (timeseries pattern), and may be referred to as “pattern” in place of“trajectory” in the following explanation. Furthermore, a “posture” ofeach part collectively means an inclination and direction of the part.The term “inclination” means an angle of the part relative to a verticaldirection, and the term “direction” is the direction of a vector whenthe vector indicating a front direction of the part is projected onto ahorizontal surface. For example, the inclination in a posture of a bodyis comprised of an inclination angle (posture angle) of the body 3 inthe roll direction (about the X-axis) relative to the Z-axis (verticalaxis) and an inclination angle (posture angle) of the body 3 in thepitch direction (about the Y-axis) relative to the Z-axis. The directionof the body 3 is represented by means of a rotational angle in the yawdirection (about the Z-axis) of the vector when the vector indicating afront direction of the body 3 is projected onto a horizontal surface. Afoot posture is represented by means of a spatial azimuth of two axesfixedly set on each foot 22. Regarding a landing posture, in particular,of the foot 22, the landing posture basically indicates the direction ofthe landed foot 22. Specifically, the landing posture represents thedirection of a vector when the vector directing from the heel of thelanded foot 22 toward its tiptoe is projected onto a horizontal surface.A desired arm posture is represented by relative postures of all partsof the arm 5 with respect to the body 3.

A body position means a predetermined position of the body 3,specifically, the position of a preset representative point of the body3. Similarly, a foot position means the position of a presetrepresentative point of each of the foot 22R and 22L. A body velocitymeans a moving velocity of the aforementioned representative point ofthe body 3, and a foot velocity means a moving velocity of theaforementioned representative point of each of the foot 22R and 22L.

The term “desired” in a desired gait, such as in a desired bodyposition/posture, will be frequently omitted in the followingexplanation when there is no danger of misunderstanding. Of gaits,constituent elements other than those related to a floor reaction force,that is, the gaits related to motions of the robot 1, such as a footposition/posture and a body position/posture, will be collectivelyreferred to as “motion.”

A floor reaction force (floor reaction force comprised of atranslational force and moment) of each of the feet 22R, L is referredto as “reaction force of each foot,” and a resultant force of the floorreaction forces of all (two) feet 22R and 22L of the robot 1 will bereferred to as “total floor reaction force.” In the followingexplanation, however, each foot floor reaction force will hardly bereferred to, so that “floor reaction force” will be handled as havingthe same meaning as “total floor reaction force” unless otherwisespecified.

A desired floor reaction force is generally expressed by a point ofaction and a force (translational force) applied to the point of actionand moment of the force. The point of action may be set at any location,so that innumerable expressions are possible for the same desired floorreaction force. If, however, a desired floor reaction force is expressedusing especially the aforesaid desired floor reaction force centralpoint as the point of action, then the moment of the force will be zeroexcept for a component of a vertical axis.

In the case of a gait that satisfies dynamic equilibrium conditions, aZMP calculated from a desired motion trajectory (a point at which momentof a resultant force of an inertial force and gravity of the robot 1calculated from the desired motion trajectory acts about the pointbecomes zero except for a vertical-axis component) agrees with a centralpoint of a desired total floor reaction force. Therefore, providing adesired ZMP trajectory can be regarded as equivalent to providing adesired total floor reaction force central point trajectory (refer to,for example, PCT publication of unexamined application WO/02/40224 bythe present applicant for details).

From the background described above, in the description of PCTpublication of unexamined application WO/02/40224, a desired gait hasbeen defined as follows:

-   -   a) In a broad sense, a desired gait is a set of a desired motion        trajectory of a period of one step or a plurality of steps and a        desired floor reaction force trajectory.    -   b) In a narrow sense, a desired gait is a set of a desired        motion trajectory of a period of one step and its ZMP        trajectory.    -   c) A series of gaits is formed of several gaits that are        connected.

To walk the robot 1, a vertical position of the body (a height of thebody) is determined by a body height determining technique proposedpreviously in Japanese Unexamined Patent Application Publication No.10-86080 by the present applicant. This subordinately determines atranslational force component of a floor reaction force, so that ZMPalone has been adequate as a physical amount to be explicitly set forthe floor reaction force of a desired gait. Accordingly, in thedescription of PCT publication of unexamined application WO/02/40224,the above b) has been adequate as the desired gait in the narrow sense.To run the robot 1, a floor reaction force vertical component is alsoimportant for control, so that it is preferable to explicitly set thefloor reaction force vertical component. For this reason, the followingb′) has been adopted for a desired gait in a narrow sense in PCTapplication (PCT/JP02/13596) previously proposed by the presentapplicant.

b′) A desired gait in a narrow sense is a set of a desired motiontrajectory of a period of one step and its ZMP trajectory, and a trackof a floor reaction force vertical component.

In the present description, the term “desired gaits” used hereinafterwill mean the desired gaits in a narrow sense unless otherwisespecified. Furthermore, the term “one step” of a desired gait will meana period from the moment one leg 2 of the robot 1 touches the ground tothe moment the other leg 2 touches the ground.

Needless to say, a two-leg supporting period will refer to a periodduring which the robot 1 supports its own weight by the two legs 2, 2, aone-leg supporting period will refer to a period during which the robot1 supports its own weight only by one leg 2, and a floating period willrefer to a period during which the two legs 2, 2 are apart from a floor(in the air).

In the one-leg supporting period, the leg 2 not supporting theself-weight of the robot 1 will be referred to as a “free leg,” and theleg 2 supporting the self-weight will be referred to as a “supportingleg.” While the robot 1 is walking, the two-leg supporting period andthe one-leg supporting period are alternately repeated. While the robot1 is running, the one-leg supporting period and the floating period arealternately repeated. In this case, during the floating period ofrunning, both legs 2, 2 do not support the self-weight of the robot 1;however, the leg 2 that was a free leg and the leg 2 that was asupporting leg during a one-leg supporting period immediately before thefloating period will be referred to as a “free leg” and a “supportingleg,” respectively, even in the floating period.

Positions/postures of individual parts of the robot 1 in desired gaits,including a desired body posture, a desired body position, a desiredfoot position/posture, and a desired arm posture, will be described bymeans of a supporting leg coordinate system. The supporting legcoordinate system is a coordinate system fixed to a floor surface havingits origin near a ground contact surface of the foot 22 of a supportingleg. More detailedly, as described in U.S. Pat. No. 3,273,443 by thepresent applicant, in the coordinate system, the origin is a point ofthe center of an ankle joint of the supporting leg vertically projectedtoward the ground contact surface when the foot 22 of the supporting legis rotated to a horizontal posture without allowing the foot 22 to slipagainst the ground contact surface. A horizontal axis (an axis in thelongitudinal direction of the foot 22) extending toward a tiptoe of thesupporting leg foot 22 provides the X-axis, a vertical axis provides theZ-axis, and a coordinate axis (axis in the lateral direction of the foot22) orthogonal to these X-axis and Z-axis provides the Y-axis.

The gait generator 200 according to the embodiment of the presentinvention uses landing positions/postures of the foot 22 of a free legand required values (desired values) of landing time up to two stepsahead as inputs to generate a desired gait composed of a desired bodyposition/posture trajectory, a desired foot position/posture trajectory,a desired ZMP trajectory, a desired floor reaction force verticalcomponent trajectory, and a desired arm posture trajectory. At thistime, some of parameters defining these trajectories (referred to asgait parameters) are corrected to satisfy continuity of a gait.

To generate desired gaits, a dynamic model of the robot 1 is used. Asthe dynamic model, for example, a simplified model described in theaforesaid PCT publication of unexamined application WO/02/40224 or amulti-mass point model (full model) disclosed in Japanese UnexaminedPatent Application Publication No. 2002-326173 proposed by the presentapplicant may be used.

The gait generator 200 defines a desired gait (desired gait in thenarrow sense) for one step from the moment one leg 2 of the robot 1touches the ground to the moment the other leg 2 grounds as a unit, andgenerates the desired gait for the one step in order. Here, a gait thatis currently generating or will be generated will be referred to as a“current time gait,” the next gait will be referred to as a “next timegait,” and a gait after next will be referred to as a “next but one timegait.” Furthermore, a desired gait generated one step before the currenttime gait will be referred to as a “last time gait.”

Some of desired gaits generated by the gait generator 200 will beillustratively outlined. For example, a desired foot position/posturetrajectory is generated using a finite-duration setting filter disclosedin U.S. Pat. No. 3,233,450 by the present applicant. In the processingfor generating a foot position/posture trajectory by the finite-durationsetting filter, a foot position trajectory, for example, is generatedsuch that the foot 22 starts moving toward a desired landing position (arequired value of the landing position) while gradually accelerating it,and then gradually decelerate its velocity to zero or substantially tozero by desired landing time (a required value of landing time) so as tostop when it reaches the desired landing position at the desired landingtime. The same applies to a foot posture trajectory. In the desired footposition/posture trajectory thus generated, a ground velocity at alanding moment is zero or substantially zero, so that a landing impactat landing from the aforesaid floating period can be reduced especiallywhen running the robot 1.

When running the robot 1 in the same manner as a human runs, as shown inFIG. 7, a desired floor reaction force vertical component trajectory anda desired ZMP trajectory (specifically in the X-axis direction (thelongitudinal direction of the supporting leg foot 22) of the supportingleg coordinate system), for example, are set by the patterns indicatedby solid lines in FIG. 8(a) and FIG. 8(b), respectively. First throughthird diagrams of FIG. 7 schematically show motional states of the twolegs 2, 2 of the robot 1 at a start point, a mid point, and an end pointof the one-leg supporting period, and a fourth diagram and a fifthdiagram schematically illustrate motional states of the two legs 2, 2 ofthe robot 1 at a mid point of the floating period and an end point ofthe floating period (the start point of the next one-leg supportingperiod).

When running the robot 1, a desired floor reaction force verticalcomponent trajectory basically exhibits a pattern jutting upward in theone-leg supporting period, and maintains zero during the floatingperiod. When walking the robot 1, the desired floor reaction forcevertical component trajectory is set, for example, as indicated by thetwo-dot chain line in FIG. 8(a). In this case, the upwardly protuberantportion of the two-dot chain line corresponds to the two-leg supportingperiod, while the downwardly protuberant portion corresponds to theone-leg supporting period. Regardless of whether the robot 1 is runningor walking, the desired ZMP is basically set around the center in theground contact surface (more specifically, in a so-called supportingpolygon) of the leg 2 of the robot 1.

FIG. 9 is a flowchart (structural flowchart) showing gait generationprocessing of the gait generator 200 and a self position/postureestimation processing of the self position/posture estimator 214 shownin FIG. 6.

First, various initializing operations, such as initializing time t tozero, are performed in S010.

Next, the program proceeds to S014 via S012 and waits for a timerinterrupt for each control cycle. The control cycle is denoted by Δt.

Then, the program proceeds to S016 to estimate self position/posture bythe self position/posture estimator 214. The processing in S016constitutes a characteristic of the self position/posture estimator ofthe leg type moving robot in accordance with the present application;the description thereof will be given hereinafter.

Subsequently, the program proceeds to S018 to determine whether a gaitis switching (whether it is the time to start generating a new currenttime gait after completion of generating a last time gait). If thedetermination result is YES, then the program proceeds to S020, or if itis NO, then the program proceeds to S032. Processing after S020, whichwill be described hereinafter, has been explained in detail in PCTpublication of unexamined application WO/02/40224 or the aforesaid PCTapplication PCT/JP02/13596 previously proposed by the present applicant;therefore, only a brief explanation will be given in the presentdescription.

When proceeding to S020, time t is initialized to zero. The program thenproceeds to S022 to read a next time gait's supporting leg coordinatesystem (specifically the position and direction), the next but one timegait's supporting leg coordinate system (specifically the position anddirection), and the current time gait's cycle and the next time gait'scycle.

The next time gait's supporting leg coordinate system and the next butone time gait's supporting leg coordinate system are determinedaccording to the definitions of the aforesaid supporting leg coordinatesystems on the basis of a required value of a landing position/posture(desired landing position/posture) of a free leg foot 22 of a first step(the free leg foot 22 of the current time gait) and a required value ofa landing position/posture (desired landing position/posture) of a freeleg foot 22 of a second step (the free leg foot 22 of the next timegait) specified primarily by operating the joystick 73.

The current time gait's cycle and the next time gait's cycle aredetermined on the basis of a required value of landing time (desiredlanding time) of the free leg foot 22 of the first step and a requiredvalue of landing time (desired landing time) of the free leg foot 22 ofthe second step.

The aforesaid required values of landing position/posture and therequired values of landing time of the free leg foot 22, or positionsand directions in the supporting leg coordinate systems and gait cyclesmay be stored beforehand as walking schedules or determined on the basisof commands (requests) from a steering device, such as the joystick 73,and a walking history up to that moment.

Then, the program proceeds to S024 wherein gait parameters of a normalturning gait connected to the current time gait are determined on thebasis of mainly the next time gait's supporting leg coordinate system,the next but one time gait's supporting leg coordinate system, thecurrent time gait's cycle, and the next time gait's cycle determined inS022. Primarily, a foot trajectory parameter defining a desired footposition/posture trajectory, a reference body posture trajectoryparameter defining a reference trajectory of a desired body posture, anarm posture trajectory parameter defining a desired arm posturetrajectory, a ZMP trajectory parameter defining a desired ZMPtrajectory, and a floor reaction force vertical component trajectoryparameter defining a desired floor reaction force vertical componenttrajectory are determined. To illustrate, for example, the floorreaction force vertical component trajectory parameter, time and valueof a bend point of the pattern shown in FIG. 9(a) are determined as thefloor reaction force vertical component trajectory parameter.

Here, the normal turning gait means a cyclic gait that is free ofdiscontinuity in a motional state of the robot 1 at a boundary of thegait when the gait is repeated (“normal turning gait” may hereinafter beabbreviated to “normal gait”).

A one-cycle gait of the normal turning gait is composed of a firstturning gait and a second turning gait. The first turning gaitcorresponds to a gait in which the supporting leg foot 22 correspondingto the supporting leg coordinate system of the current time gait ismoved to a position/posture corresponding to the next but one timegait's supporting leg coordinate system. The second turning gaitcorresponds to a gait in which the supporting leg foot 22 correspondingto the supporting leg coordinate system of the next time gait is movedto a position/posture corresponding to a next but two time gait'ssupporting leg coordinate system. In this case, the next but two timegait's supporting leg coordinate system corresponds to a desired landingposition/posture of the free leg foot 22 of the second turning gait.Furthermore, the next but two time gait's supporting leg coordinatesystem is set such that the position/posture (position and direction) ofthe next but two time gait's supporting leg coordinate system observedfrom the next but one time gait's supporting leg coordinate system (thesupporting leg coordinate system of the second turning gait) agrees withthe position/posture (position and direction) of the next time gait'ssupporting leg coordinate system (landing position/posture of the freeleg foot 22 of the current time gait) observed from the current timegait supporting leg coordinate system. The term “turning” is used fornormal turning gaits, because it means moving straight when a turningrate is set to zero, and moving straight can be included in turning in abroad sense.

Normal turning gaits are virtual cyclic gaits provisionally prepared todetermine a divergent component at an end of the current time gait or abody vertical positional velocity by the gait generator 200, and are notdirectly output from the gait generator 200 to actually control therobot 1.

The term “divergent” means that the position of the body shifts awayfrom the position of the two foot portions (feet). A value of adivergent component is a numeral value indicating how far the positionof the body of the bipedal moving robot shifts from the position of thetwo foot portions (feet) (strictly speaking, a numeral value indicatinghow far it shifts from the origin of a supporting leg coordinate systemset on a supporting leg ground contact surface), and it is expressed bya position of the body 3 in the horizontal direction and a velocityfunction thereof.

In the present embodiment, a normal gait following the current time gaitto be generated is set on the basis of a move request (a required valueof a landing position/posture of the foot 22 of a free leg up to thenext two steps and landing time or the like), and an initial divergentcomponent of a normal gait is determined, and then the current time gaitis generated so that a terminal divergent component of the current timegait agrees with the initial divergent component of the normal gait. Thedetails of S024 have been explained in the aforesaid PCT publication ofunexamined application WO/02/40224 or PCT/JP02/13596 proposed by thepresent applicant, so that any further explanation will be omitted.

After the processing shown by S010 through S024 is carried out, theprogram proceeds to S026 wherein an initial condition (an initial bodyhorizontal positional velocity component, an initial body verticalpositional velocity, an initial divergent component, an initial bodyposture angle, and an angular velocity) of the normal turning gait isdetermined. The details of S026 have been explained in the aforesaid PCTpublication of unexamined application WO/02/40224 or PCT/JP02/13596, sothat any further explanation will be omitted.

Subsequently, the program proceeds to S028 wherein gait parameters forthe current time gait are determined (some being provisionallydetermined). In this case, the gait parameters for the current time gaitto be determined mainly include a foot trajectory parameter, a referencebody posture trajectory parameter, an arm posture trajectory parameter,a desired ZMP trajectory parameter, and a desired floor reaction forcevertical component trajectory parameter, as in the case of the gaitparameters for a normal turning gait. The trajectories defined by theindividual parameters are determined so that they continue to thetrajectory of the normal turning gait. Among these parameters, however,the desired ZMP trajectory parameter is provisional. The details of theprocessing of S028 have been explained in the aforesaid PCT publicationof unexamined application WO/02/40224 or PCT/JP02/13596, etc. so thatany further explanation will be omitted.

Next, the program proceeds to S030 wherein a gait parameter of thecurrent time gait is corrected so that a terminal divergent component ofthe current time gait agrees with an initial divergent component of anormal gait. The gait parameter corrected here is the desired ZMPtrajectory parameter.

After the current time gait parameter are corrected in S030, or if adetermination result of S018 is NO, then the program proceeds to S032 todetermine a current time gait instantaneous value. The details of theprocessing have been explained in the aforesaid PCT publication ofunexamined application WO/02/40224 or PCT/JP02/13596, etc. so that anyfurther explanation will be omitted.

The program then proceeds to S034 wherein an arm swinging operation forcanceling a spin force is determined, as in the case of the processingof S032 in an embodiment of PCT application No. PCT/JP02/13596.

The program then proceeds to S036 wherein it increases gait generatingtime t by Δt, and returns to S014 to continue generating gaits asdescribed above.

The above describes the processing for generating desired gaits carriedout in the gait generator 200, and the processing for estimating selfpositions/postures carried out in the self position/posture estimator214.

Referring to FIG. 6, control processing by the control unit 60 accordingto the present embodiment will be further explained. In the gaitgenerator 200, desired gaits are generated, as described above. Amonggenerated desired gaits, a desired body position/posture (trajectory)and a desired arm posture trajectory are directly sent to a robotgeometric model (inverse kinematics operation part) 202.

A desired foot position/posture (trajectory), a desired ZMP trajectory(desired total floor reaction force central point trajectory), and adesired total floor reaction force (trajectory) (a desired floorreaction force horizontal component and a desired floor reaction forcevertical component) are directly sent to a composite-complianceoperation determiner 204 and also to a desired floor reaction forcedistributor 206. In the desired floor reaction force distributor 206, adesired total floor reaction force is distributed to the feet 22R and22L, and a desired floor reaction force central point of each foot and adesired floor reaction force of each foot are determined. The determineddesired floor reaction force central point of each foot and the desiredfloor reaction force of each foot are sent to the composite-complianceoperation determiner 204.

The composite-compliance operation determiner 204 generates a correcteddesired foot position/posture trajectory with deformation compensationand sends it to the robot geometric model 202. Upon receipt of a desiredbody position/posture (trajectory) and a corrected desired footposition/posture (trajectory) with deformation compensation, the robotgeometric model 202 calculates joint displacement commands (values) oftwelve joints (10R(L), etc.) of the legs 2, 2 that satisfy them andsends the calculated commands to a displacement controller 208. Thedisplacement controller 208 performs follow-up control on thedisplacements of the twelve joints of the robot 1, using the jointdisplacement commands (values) calculated by the robot geometric model202 as desired values.

A floor reaction force generated in the robot 1 (more specifically, anactual floor reaction force of each foot) is detected by the six-axisforce sensor 50. The detected value is sent to the composite-complianceoperation determiner 204. As will be discussed later in relation to S016of FIG. 9, inclination components, namely, actual body posture angleerrors θerrx and θerry, in a difference between an estimated bodyposture determined and a desired body posture generated by the gaitgenerator 200 are supplied to a posture stabilization control operationpart 212. θerrx denotes an inclination component in the roll direction(about the X-axis) and θerry denotes an inclination component in thepitch direction (about the Y-axis). The posture stabilization controloperation part 212 calculates a compensation total floor reaction forcemoment Mdmd about a desired total floor reaction force central point(desired ZMP) for restoring the inclination of the body posture of therobot 1 to the inclination of the body posture of a desired gait. Thecompensation total floor reaction force moment Mdmd is supplied to thecomposite-compliance operation determiner 204. The composite-complianceoperation determiner 204 modifies a desired foot position/posture on thebasis of an input value. More specifically, the composite-complianceoperation determiner 204 modifies the desired foot position/posturereceived from the gait generator 200 to determine the corrected desiredfoot position/posture (trajectory) with deformation compensation suchthat an actual total floor reaction force (a resultant force of allactual foot floor reaction forces, including both translational forceand moment) agrees with a resultant force of the desired total floorreaction force, which is the resultant force of individual desired footfloor reaction forces, and the total compensation floor reaction forcemoment Mdmd. It is actually impossible, however, to make every stateagree with a desired state, so that a trade-off relationship isestablished therebetween to make them compromisingly agree with eachother. More specifically, control errors with respect to desired footpositions/postures and desired floor reaction forces are weighted, andcontrol is carried out to minimize the weighting average of controlerrors (or squares of control errors).

Complementarily, a corrected desired foot position/posture (trajectory)with deformation compensation is a desired foot position/posture(trajectory) obtained by determining a deformation amount of adeformation mechanism (a columnar rubber, a sole sponge, and abag-shaped air damper for absorbing shocks) of a foot required togenerate a desired value of a floor reaction force corrected by thecomposite-compliance operation determiner 204 by using a dynamic model(a spring damper model or the like) of the deformation mechanism, andthen by making a correction so that the determined deformation amount isgenerated.

The following will explain in detail self position/posture estimationprocessing in S016 in the present embodiment with reference to FIG. 10showing a flowchart thereof.

In S2200 of FIG. 10, detected values of the gyro sensor provided in theinclination sensor 54 of the body 3, that is, angular velocities(angular velocities in three-axis directions) of the body 3, areintegrated by an integrator to determine an estimated body posture(hereinafter referred to as an inertial-navigation-like estimated bodyposture in some cases). The estimated body posture is described in aglobal coordinate system. In this processing, drift correction forcorrecting a drift from accumulation of integration errors of thedetected values of the gyro sensor is also performed using mainly anestimated body position, which is an estimated value of a body positiondetermined by the processing from S2202 to S2214 to be discussedhereinafter in a previous control cycle (a preceding or earlier controlcycle). This will be discussed in more detail hereinafter.

Subsequently, the program proceeds to S2202 to calculate a differencebetween a variation in an estimated body posture observed from theglobal coordinate system (an estimated body posture determined in S2200)between control cycles (between the preceding control cycle and thepresent control cycle) and a variation in a body posture of a desiredgait observed from the global coordinate system between the controlcycles, as a variation in posture rotational error. In other words, thedifference between a changing velocity of an estimated body postureobserved from the global coordinate system and a changing velocity of adesired body posture is calculated as a variation in the posturerotational error.

The body posture of a desired gait observed from the global coordinatesystem refers to the body posture observed from the global coordinatesystem when it is assumed that the robot 1 has moved according to thedesired gait without the body 3 inclining its posture or spinning(shifting from a desired body posture) during a control cycle on thecurrent estimated supporting leg coordinate system (more specifically,on an estimated supporting leg coordinate system determined in thepreceding control cycle). However, the estimated supporting legcoordinate system refers to a supporting leg coordinate systemcorresponding to an estimated position/posture of the actual supportingleg foot 22 of the robot 1. This means that the estimated supporting legcoordinate system is defined by the aforesaid supporting leg coordinatesystem, more specifically, it is a coordinate system wherein its originis a point of the center of an ankle of the supporting leg verticallyprojected toward a ground contact surface when the foot 22 of thesupporting leg of the actual robot 1 is rotated from the estimatedposition/posture to a horizontal posture without allowing the foot 22 toslip against the ground contact surface, the horizontal axis toward atiptoe of the supporting leg foot 22 being defined as the X-axis, thevertical axis being defined as the Z-axis, and a coordinate axisorthogonal to these axes being defined as the Y-axis.

The program then proceeds to S2204 to determine a posture rotationalcenter. To be more specific, a desired ZMP at a particular moment (acurrent value of the desired ZMP) is determined as the posturerotational center. In a floating period while the robot 1 is running,the gravity of the robot 1 in, for example, a desired gait is determinedas the posture rotational center.

The program then proceeds to S2206 to determine the position and postureobtained by rotating the current estimated supporting leg coordinatesystem (the estimated supporting leg coordinate system determined in thepreceding control cycle, which is the estimated supporting legcoordinate system at time t-Δt shown in FIG. 11) about the posturerotational center by the aforesaid variation in posture rotationalerror, as the updated current estimated supporting leg coordinate system(the estimated supporting leg coordinate system at time t shown in FIG.11).

The origin and the directions of the coordinate axes of the estimatedsupporting leg coordinate system are represented by a global coordinatesystem. It is assumed that initial values of the estimated supportingleg coordinate system (initial position/posture in the global coordinatesystem) have been set during initialization processing in S010.

The rotational center of the estimated supporting leg coordinate systemmeans a rotational center of slippage rotation of the supporting legfoot 22 in normal walk, which is free of a floating period. In thefloating period in a running motion or the like wherein a supporting legis also apart from a floor during one step, no slippage of thesupporting leg foot 22 takes place in a narrow sense. For this reason, aposture rotation (or spin) in the air is preferably expressed by meansof a rotation about the rotational center of the estimated supportingleg coordinate system. However, in a broad sense, the “slippage of asupporting leg foot” may be defined as a posture rotation about therotational center of the estimated supporting leg coordinate system.

Complementarily, the supporting leg coordinate system is set withrespect to the ground contact surface of the supporting leg foot 22, andthe origin thereof may not be the one vertically projected from thecenter of the ankle of the supporting leg as described above. In otherwords, the supporting leg coordinate system is a local coordinate systemset on a virtual floor in the vicinity of the supporting leg foot 22 fordescribing motions of the robot 1. In effect, the phenomenon of aposture rotation (or spin) of the robot 1 is regarded as a phenomenon inwhich the virtual floor is posture-rotated (or spun) about apredetermined point in a global coordinate system, as its rotationalcenter, together with the entire robot, while maintaining a statewherein the robot 1 is in motion without relatively posture-rotating (orspinning) on the virtual floor.

In other words, the motion of the robot 1 may be regarded as aperturbational rotation in which the entire robot 1 in motion accordingto desired gaits or joint detected displacement values in a localcoordinate system rotates, together with the local coordinate system,about a predetermined point as its rotational center (posture rotationalcenter) with respect to the global coordinate system.

Hence, the posture rotational center may be defined as the rotationalcenter of an estimated supporting leg coordinate system and also as therotational center of the perturbational rotation.

Generally, the Z-axis of the current estimated supporting leg coordinatesystem after the posture rotation in S2206 is not oriented in a verticaldirection. Therefore, after the posture rotation, the Z-axis of thecurrent estimated supporting leg coordinate system may be returned inthe vertical direction (a next time gait's estimated supporting legcoordinate system may be rotated about its origin by the inclinationangle of the Z-axis relative to the vertical direction). Alternatively,during the posture rotation processing in S2206, the estimatedsupporting leg coordinate system may be rotated by a component about avertical axis (spinning component) out of the aforesaid variation inposture rotational error.

The program then proceeds to S2208 in which it is determined whetherlanding time has been reached, i.e., whether it is a gait switchingmoment.

If the determination result in S2208 is YES, then the followingprocessing is carried out. First, the program proceeds to S2210 whereina next time gait's estimated supporting leg coordinate system isdetermined such that the relative position/posture relationship of thenext time gait's estimated supporting leg coordinate system with respectto the current estimated supporting leg coordinate system (the estimatedsupporting leg coordinate system after the posture rotation in S2206)will be the same as the relative position/posture relationship of thenext time gait's supporting leg coordinate system with respect to thesupporting leg coordinate system in a desired gait (last time gait), asillustrated in FIG. 12. The next time gait's supporting leg coordinatesystem in this case means the supporting leg coordinate system of thegait following the last time gait (i.e., the current time gait), ratherthan the next time gait's supporting leg coordinate system for thecurrent time gait to be generated. The supporting leg coordinate systemof a desired gait is a coordinate system having its Z-axis oriented inthe vertical direction, so that the Z-axis of the next time gait'sestimated supporting leg coordinate system that satisfies the aforesaidrelative position/posture relationship with respect to the currentestimated supporting leg coordinate system after a posture rotation isnot usually oriented in the vertical direction. In the presentembodiment, therefore, a next time gait's estimated supporting legcoordinate system is eventually determined by returning, in the verticaldirection, the Z-axis of the next time gait's estimated supporting legcoordinate system that satisfies the above relative position/posturerelationship with respect to the current estimated supporting legcoordinate system after a posture rotation (the next time gait'sestimated supporting leg coordinate system is rotated about its originby an inclination angle of the Z-axis relative to the verticaldirection). In S2206, if the Z-axis of the estimated supporting legcoordinates is oriented in the vertical direction, as described above,then the processing for returning the Z-axis of the next time gait'sestimated supporting leg coordinate system in the vertical direction inS2210 will be unnecessary.

Subsequently, the program proceeds to S2212 in which theposition/posture (the position of the origin and the directions of thecoordinate axes) of the next time gait's estimated supporting legcoordinate system determined in S2210 is substituted into theposition/posture of the current estimated supporting leg coordinatesystem. In other words, the position/posture of the current estimatedsupporting leg coordinate system is replaced by the position/posture ofthe next time gait's estimated supporting leg coordinate system.

After S2212 or if the determination result of S2208 is NO, then theprogram proceeds to S2214 wherein an estimated body position, which isan estimated value of the body position in a global coordinate system,is determined on the basis of the position/posture of the currentestimated supporting leg coordinate system. However, the relationship ofthe estimated body position relative to the current estimated supportingleg coordinate system is set to agree with the relationship of the bodyposition (desired body position) with respect to the supporting legcoordinate system of a desired gait (desired gait determined in aprevious control cycle).

Next, the program proceeds to S2216 wherein an inertial-navigation-likeestimated body position/posture is determined according to the inertialnavigation by the accelerometer and the gyro sensor provided in theinclination sensor 54, and the inertial-navigation-like body position iscorrected so that the difference between a geometrically estimated bodyposition and the inertial-navigation-like estimated body position isconverged to zero. More details of this processing will be discussedhereinafter.

The above is the outline of the self position/posture estimationprocessing in S016 of FIG. 9.

In S2210, desired gaits have been used to determine the next time gait'sestimated supporting leg coordinate system. Alternatively, however, anext time gait's estimated supporting leg coordinate system may bedetermined as described below when walking the robot 1.

First, based on a current (landing instant) joint detected displacementvalue of the robot 1, actual free leg foot position/posture (theposition/posture of the front foot 22 of the robot 1 in the exampleshown in FIG. 12) at landing in a current estimated supporting legcoordinate system is estimated by kinematics computation. Hereinafter,the estimated actual free leg foot position/posture at landing will bereferred to as an estimated free leg foot position/posture at landing.

At this time, however, it is assumed that the robot 1 is in motionaccording to a joint detected displacement value without the foot 22 ofthe supporting leg slipping relative to a virtual floor on the currentestimated supporting leg coordinate system while the robot 1 maintains abody posture based on a desired gait on the current estimated supportingleg coordinate system.

Complementarily, it is assumed that the robot 1 maintains the bodyposture based on the desired gait on the current estimated supportingleg coordinate system rotated about the posture rotational center by thevariation in posture rotational error in order to make the body posturein the assumed figure match with the estimated body posture in a globalcoordinate system at that moment. Hence, when rotating the currentestimated supporting leg coordinate system only by a vertical axiscomponent (spin component) in the variation in posture rotational errorrather than posture-rotating it by the aforesaid difference, it isassumed that the robot 1 is in motion based on a joint detecteddisplacement value without slippage of the foot 22 of the supporting legrelative to a virtual floor on a current estimated supporting legcoordinate system while the robot 1 maintains the orientation of thebody based on a desired gait on the current estimated supporting legcoordinate system, with the inclination of the body agreeing with aninclination component of the variation in the posture rotational error.

At this time, based on at least one of a floor reaction force detectedvalue by the six-axis force sensor 50 and a floor reaction force of adesired gait, a variation in the deformation mechanism of the foot 22(the elastic member 106, the ground contact member (sole elastic member)71, the bag-shaped member 109, etc. shown in FIG. 3 and FIG. 4) may bedetermined using a dynamic model (a spring damper model or the like) ofthe deformation mechanism, and an estimated free leg footposition/posture at landing may be determined, including (considering)the deformation amount. More specifically, as the figure of the robot 1shown in FIG. 12, a total figure (a total figure of the robot 1 at thatmoment) is determined when a body posture is defined as a desired bodyposture in a current estimated supporting leg coordinate system, and ajoint displacement is defined as a joint detected displacement value (aj-th joint detected displacement value θj, j=1, 2 . . . ), and avariation amount of the deformation mechanism is defined as an estimateddeformation amount estimated on the basis of a floor reaction forcedetected value. Then, a free leg foot position/posture relative to thesupporting leg in the entire figure (the leg 2 at the rear side of therobot 1 shown in FIG. 12) is determined, and the determinedposition/posture may be used as the estimated free leg footposition/posture at landing. Alternatively, a disturbance observer maybe used on the basis of a motor current command or a detected value toestimate a load acting on a decelerator or a link, and deformation ofthe decelerator or the link may be estimated on the basis of theestimated load so as to determine an estimated free leg footposition/posture at landing, including (considering) the deformation ofthe decelerator or the link.

Further alternatively, an estimated free leg foot position/posture atlanding may be determined by kinematics computation on the basis of atleast a joint displacement of a desired gait (a desired jointdisplacement value) and a compliance compensation amount (refer toJapanese Unexamined Patent Application Publication No. 10-277969previously proposed by the present applicant).

The above arrangements make it possible to determine estimated free legfoot positions/postures at landing with further improved accuracy.

When walking the robot 1, the processing in S2214 may use the sametechnique for determining estimated free leg foot positions/postures atlanding to determine the body position relative to a supporting legcoordinate system by kinematics computation on the basis of currentjoint detected displacement values of individual joints of the robot 1,and then determine an estimated body position such that the positionalrelationship of the estimated body position relative to a currentestimated supporting leg coordinate system agrees with the abovedetermined positional relationship. In this case, the relationship amongestimated body positions, estimated supporting leg coordinate systems,and joint detected displacement values is as shown in FIG. 12.

Alternatively, a body position relative to a supporting leg coordinatesystem may be determined by kinematics computation on the basis of atleast a joint displacement of a desired gait (a desired jointdisplacement value) and a compliance compensation amount (refer toJapanese Unexamined Patent Application Publication No. 10-277969previously proposed by the present applicant), and then the relationshipof an estimated body position with respect to an estimated supportingleg coordinate system may be set to agree with the above determined bodyposition.

The above arrangements make it possible to determine estimated bodypositions with further improved accuracy.

Processing of S2200 and processing of S2216 will now be explained indetail with reference to FIG. 13. In the following explanation, anestimated body position determined in S2214 will be referred to as ageometrically estimated body position.

To explain the processing of S2200 in detail, based on a motion at thegeometrically estimated body position determined as described above in apreceding control cycle or earlier, a geometrically estimated bodyacceleration, which is a second-order differential of the geometricallyestimated body position, is calculated. This processing is carried outby a block 301 shown in FIG. 13. It is assumed that the processing fordetermining the geometrically estimated body position is carried out bya block 300 shown in FIG. 17. Complementarily, as long as a bodyrepresentative point and the position of the accelerometer coincide witheach other, an estimated body posture is not necessary in calculating ageometrically estimated body acceleration (strictly speaking, theacceleration at the position of the accelerometer in the body 3 that isgeometrically estimated).

Subsequently, an accelerometer detected value converted to a globalcoordinate system value obtained by converting an accelerometer detectedvalue (body detected acceleration value) into a global coordinate systemby using an estimated body posture is determined. This processing iscarried out by a block 302 shown in FIG. 13. To simplify theexplanation, it is assumed here that the position of the accelerometerand the position of the body representative point coincide with eachother. If they do not coincide, then an accelerometer detected value anda gyro sensor detected value may be converted into an acceleration andan angular velocity at the body representative point by the kinematicscomputation or the acceleration and the angular velocity at the bodyrepresentative point may be converted into an acceleration at a positionof the accelerometer and an angular velocity at a position of the gyrosensor.

Then, as illustrated in FIG. 14(a) and FIG. 14(b), the geometricallyestimated body acceleration is subtracted from a value obtained byconverting an accelerometer detected value into a global coordinatesystem value (vector subtraction) so as to determine an estimatedgravitational acceleration. The value obtained by converting anaccelerometer detected value into a global coordinate system valueincludes an acceleration component from gravity acting on theaccelerometer, while the geometrically estimated body acceleration doesnot include any acceleration component from gravity. Thus, an estimatedgravitational acceleration is determined by subtracting thegeometrically estimated body acceleration from the value obtained byconverting an accelerometer detected value into a global coordinatesystem value. This processing is implemented by a block 303 shown inFIG. 13. FIG. 14(a) illustrates a case where the estimated body posturehas no error, while FIG. 14(b) illustrates a case where the estimatedbody posture has an error (hereinafter referred to as an estimated bodyposture error or an estimated body posture angular error).

Meanwhile, gravitational acceleration assumed to be generated in thevertical direction (Z-axis direction) of a global coordinate systemestimated by the robot 1 on the basis of an estimated body posture isreferred to as an assumed gravitational acceleration, as shown in FIG.14(a) and FIG. 14(b).

As previously mentioned, geometrically estimated body acceleration isdescribed using a global coordinate system. The actual robot 1 is inmotion, following a desired gait on the assumption that an estimatedbody posture correctly estimates an actual body posture. In other words,the robot 1 is in motion, following the desired gait, on the estimatedglobal coordinate system on the assumption that the global coordinatesystem estimated on the basis of an estimated body position/posture iscorrect. More strictly speaking, in the self position/posture estimationprocessing of the robot 1, it is believed that a global coordinatesystem estimated on the basis of an estimated body position/posture iscorrect, and a behavior of the actual robot 1 is considered as a resultof rotating the robot 1 in motion according to a desired gait on anestimated supporting leg coordinate system, which is a local coordinatesystem set on a global coordinate system believed to be correct, about apredetermined posture rotational center at a moment determined by aposture rotational center determining means by a variation in a posturerotational error as the difference between a changing velocity of a bodyposture obtained (detected or estimated) by a posture detecting means ateach moment and a body posture changing velocity of a desired gait, therobot 1 rotating together with the estimated supporting leg coordinatesystem.

Accordingly, if an estimated body posture is correct and a detectedvalue of the accelerometer is free of an error, then the assumedgravitational acceleration and the estimated gravitational accelerationagree with each other, as shown in FIG. 14(a).

Meanwhile, even if a detected value of the accelerometer includes noerror, if an estimated body posture includes an error, then an estimatedbody posture angular error is produced between the direction of theassumed gravitational acceleration and the direction of the estimatedgravitational acceleration, as shown in FIG. 14(b). Thus, expression 42holds true.Estimated body posture angular error=Angle formed by assumedgravitational acceleration and estimated gravitationalacceleration  Expression 42

As shown in FIG. 14(a) and FIG. 14(b), it can be understood that, if thedifference between an estimated gravitational acceleration and anassumed gravitational acceleration is referred to as an estimatedgravitational acceleration error, then the estimated gravitationalacceleration error is generated by an error in an estimated body postureprovided a detected value of the accelerometer has no error, and therelationship represented by expression 43 exists between a horizontalcomponent of the estimated gravitational acceleration error observedfrom the global coordinate system estimated by the robot 1 on the basisof an estimated body posture (a component orthogonal to an assumedgravitational acceleration of an estimated gravitational acceleration)and the estimated body posture angular error. Expression 43, however,indicates a relationship between a longitudinal component (X component)of an estimated gravitational acceleration error and a Y-axis componentof an estimated body posture angular error. In a case where arelationship between a lateral component (Y component) of an estimatedgravitational acceleration error and an X-axis component of an estimatedbody posture angular error is indicated, the minus sign on the rightside may be deleted. Here, the gravitational acceleration is positive.Horizontal component of estimated gravitational acceleration error =−tan(Estimated body posture angular error)*Gravitationalacceleration  Expression 43

In the present embodiment, an estimated body posture is corrected usingan estimated body posture angular error calculated from expression 42 orexpression 43 so that an estimated body posture error converges to zero.

Returning to the explanation of the processing of S2200, an estimatedbody posture angular error is calculated, using expression 42, from theangle formed by the assumed gravitational acceleration and the estimatedgravitational acceleration at the current instant (strictly speaking, atthe instant of one control cycle before). Alternatively, expression 43may be used to calculate the estimated body posture angular error from ahorizontal component of an estimated gravitational acceleration error atthe current instant (strictly speaking, at the instant of one controlcycle before). The processing for calculating an estimated body postureangular error is carried out by a block 304 shown in FIG. 13.

Subsequently, the estimated body posture angular error is converted to asensor coordinate system (a coordinate system having its coordinate axesmatched to detection axes of the gyro sensor) by a block 305 shown inFIG. 13, and then a value obtained by multiplying the converted value byan integration gain Ka is integrated to determine an estimated gyrosensor drift (an estimated value of the drift of the gyro sensor).Furthermore, the estimated gyro sensor drift is subtracted from a gyrosensor detected value ωin (body angular velocity detected value) by ablock 307 so as to determine an angular velocity with a corrected drift.In the block 307, a drift of a yaw rate is also subtracted, asnecessary, which will be discussed hereinafter. Then, the angularvelocity with the corrected drift is converted to a global coordinatesystem by a block 350, using an estimated body posture, so as todetermine a global body angular velocity ωgl.

Next, a value obtained by multiplying the estimated body posture angularerror by a gain Kb by a block 309 shown in FIG. 13 is subtracted fromthe global body angular velocity ωgl by a block 308, and then the valueafter the subtraction (the output of the block 308) is integrated by ablock 310 (integrator) to determine a new estimated body posture θestm.

The estimated body posture θestm and angular velocity or the like arerepresented by quarternion, rotational matrix or Euler angle or thelike.

To ensure effective estimation when estimating a drift of the gyrosensor (estimated gyro sensor drift) by the construction describedabove, it is a precondition that each factor (each factor's estimatedbody posture angular error about a sensor detection axis, i.e., sensorlocal estimated body posture angular error) of a conversion value(vector) obtained by converting an estimated body posture angular errorto a sensor coordinate system is subjected only to an influence of adrift of a gyro sensor associated with that factor and is not or hardlysubjected to influences of drifts of other gyro sensors.

In other words, it is a precondition in that an error of a componentabout the X(Y)-axis of an estimated body posture angular error issubjected to an influence of a drift of a gyro sensor for the X(Y)-axis,but not subjected to an influence of a drift of a gyro sensor for theY(X)-axis.

If the body is suddenly rotated 90 degrees about the Z-axis of a sensorcoordinate system after a component about the X-axis of an estimatedbody posture angular error is generated due to an influence of a driftof the gyro sensor for the X-axis, a component about a sensor localX-axis of the estimated body posture angular error is consequentlyshifted to a component about a sensor local Y-axis of the estimated bodyposture angular error, because the estimated body posture angular errorremains accumulated in a global coordinate system. Hence, for theaforesaid precondition to hold true, it is a prerequisite that anabsolute value of a velocity of rotation about the Z-axis of a sensorcoordinate system be sufficiently small.

Accordingly, if an absolute value of a gyro sensor detected value forthe Z-axis (the vertical axis of the body) is large, then it ispreferable to reduce the integration gain Ka or set it to zero (that is,to make no drift correction of a gyro sensor).

Normally, when the robot 1 moves or works, the vertical axis (trunkaxis) of the body 3 is vertical or close to vertical. Hence, the globalbody angular velocity ωglz obtained by converting an angular velocitydetected value of a gyro sensor into a global coordinate system takes avalue close to an angular velocity detected value of the gyro sensor forthe Z-axis.

Thus, as shown in FIG. 15, if an absolute value of the angular velocityωglz about a vertical axis of a global body angular velocity obtained byconverting an angular velocity detected value of a gyro sensor into aglobal coordinate system, then the integration gain Ka may be set to asmall value or zero (i.e., no drift correction of the gyro sensor may bemade).

If an absolute value of a component about the vertical axis of a bodyrotational velocity of a desired gait of the body 3 or a component aboutthe vertical axis of the body 3 is large, instead of an angular velocitydetected value of a gyro sensor, then the integration gain Ka may be setto a small value or zero (i.e., no drift correction of the gyro sensormay be made).

In summary, if an absolute value of a component about the vertical axisof the body rotational velocity or a component about the vertical axisof the body 3 that is determined on the basis of at least either anangular velocity detected value of a gyro sensor or a desired gait islarge, then the integration gain Ka should be set to a small value orzero (i.e., no drift correction of the gyro sensor should be made).

If an absolute value of a value obtained by subtracting an assumedgravitational acceleration from accelerometer detected value convertedinto a global coordinate system value or an absolute value of ageometrically estimated body acceleration is large, then an error of theestimated gravitational acceleration tends to be increased due to adetection error of a sensor or insufficient rigidity of the main body ofthe robot 1. Therefore, the aforementioned gain Ka should be set to be asmall value or zero.

As described above, the actual robot 1 assumes that the globalcoordinate system estimated on the basis of an estimated bodyposition/posture is correct and moves to follow a desired gait on theestimated global coordinate system. Hence, in a state wherein asupporting leg is in contact with the ground, even if an estimated bodyposture includes a large error, an actual body acceleration will not begoverned by an actual gravitational acceleration, so that itsubstantially coincides with a geometrically estimated body accelerationon the estimated global coordinate system. On the other hand, in afloating period, an actual body acceleration is accelerated by beinggoverned by an actual gravitational acceleration, resulting in aconsiderable shift from a direction of the geometrically estimated bodyacceleration on the estimated global coordinate system. Hence, therelationship shown in FIG. 14(b) no longer applies. Thus, in thefloating period, the accuracy of a geometrically estimated body positiontends to be lower than the accuracy of a body position determined by theinertial navigation on the basis of an accelerometer and a gyro sensorwith relatively high accuracy. Hence, the gain Ka should be set to asmall value or zero also in the floating period.

If a body position is estimated, taking the deformation of the foot 22into account, as mentioned above, an estimation error in a deformationamount in the vicinity of a sole tends to increase in a state whereinthe foot 22 at the distal end of a leg is in poor contact with a flooreven in a non-floating period, leading to deteriorated accuracy of ageometrically estimated body acceleration. For this reason, the gain Kashould be set to a small value or zero also when the area of contactbetween the foot 22 of a supporting leg and a floor is small.

The state wherein the foot 22 of a leg 2 is in good contact with a floorspecifically refers to a state wherein at least one of the followingconditions is satisfied or a plurality of the following conditions aresimultaneously satisfied.

-   a) State wherein the area of contact between the bottom surface of    the foot 22 and a floor is large, e.g., the foot 22 is in full    contact with the floor (a state of so-called flatfoot).-   b) State wherein distributed pressure of a floor reaction force is    relatively even.-   c) State wherein there are many ground contact locations.-   d) State wherein a desired ZMP (or an actual floor reaction force    central point) is located at the center or near the center of the    foot 22.-   e) State wherein a ground contact pressure or a floor reaction force    is high.-   f) State wherein a position/posture rate of change of the foot 22 is    small, or strictly speaking, a change in a relative position/posture    relationship between the bottom surface of the foot 22 and a floor    is small.

The above states may be determined on the basis of, for example, atiming (phase) of a desired gait, a desired ZMP, or a floor reactionforce detected value. Alternatively, the above states may be determinedon the basis of detected values of a distributed pressure sensor or acontact sensor, which is not provided in the present embodiment.

To summarize the gain setting method described above, it is desirable toset the gain Ka to a small value or zero in a state wherein an absolutevalue of a component about the vertical axis of a body rotationalvelocity or a component about the axis in the vertical direction of thebody 3 that is determined on the basis of at least either an angularvelocity detected value of a gyro sensor or a desired gait of is large,a state wherein an absolute value of a value obtained by subtracting anassumed gravitational acceleration from an accelerometer detected valueconverted into a global coordinate system or an absolute value of ageometrically estimated body acceleration is large, or in a floatingperiod, or in a state wherein a distal end portion (foot) of a leg isnot in good contact with a floor.

In other words, the integration gain Ka should be determined by makingcomprehensive judgment based on the aforesaid states.

The integration gain Ka may alternatively be determined on the basis ofinstantaneous values of the aforesaid states or a long-term trend.

For the same reason, an integration gain Kb is preferably set in thesame manner as that for the gain Ka.

In S2200 of the present embodiment, in addition to the aforesaidprocessing, a yaw rate correction (a drift correction in the yawdirection) is also made as follows, depending on situations.

First, whether to correct a yaw rate is determined by a block 311 shownin FIG. 13.

To be more specific, at least one or a plurality of the followingconditions are prepared as determination conditions, and it isdetermined to correct a yaw rate if the determination condition orconditions are satisfied.

-   a) An absolute value of a moment (or its differential value) about    the vertical axis of a detected floor reaction force is a    predetermined value or less.-   b) A desired operation is substantially static.-   c) Contact between a sole and a floor is considered to be good with    no slippage.-   d) An absolute value of a difference between a posture angular    velocity of a desired gait and a gyro detected value (posture    angular velocity detected value) is a predetermined value or less.-   e) An absolute value of a posture angular velocity of a desired gait    is a predetermined value or less.-   f) An absolute value of a gyro detected value (posture angular    velocity detected value) is a predetermined value or less.

Basically, it will be determined to make a yaw rate correction in asituation wherein no slippage (rotational slippage) takes place or it isdifficult for slippage to take place on a ground contact surface betweenthe supporting leg foot 22 and a floor.

The gyro detected values in d) and f) are desirably the values obtainedby directly subjecting detected values of the gyro sensor (postureangular velocity detected values represented by raw outputs themselvesof the gyro sensor) to yaw rate correction.

Then, when it is determined to perform the yaw rate correction, a bodyposture when it is assumed that no slippage is taking place between thefoot 22 and a floor corresponding to an estimated supporting legcoordinate system (hereinafter referred to as an estimated body posturewith no slippage) is calculated by a block 312 shown in FIG. 13 on thebasis of at least one of a desired gait, a desired body posture, adesired joint displacement and a joint detected displacement value, andan estimated supporting leg coordinate system stored at a latest landingmoment (hereinafter referred to as an estimated supporting legcoordinate system at landing). Then, a difference between the estimatedbody posture and the estimated body posture with no slippage isdetermined by a block 313, and the determined difference is convertedinto a sensor coordinate system by a block 314. The converted differenceis supplied to a block 315 of a feedback control law so as to determinea yaw rate drift. As the feedback control law of the block 315, PIDcontrol law, for example, is used. The sum of a value obtained bymultiplying a temporal differential value (or a variation in thedifference between control cycles) of the above difference (the outputof the block 314) by a gain Ke, a value obtained by multiplying thedifference (the output of the block 314) by a gain Kf, and a valueobtained by multiplying an integration value of the difference (theoutput of the block 314) by a gain Kg is determined so as to determinethe yaw rate drift. Then, the determined yaw rate drift is subtractedfrom the aforesaid angular velocity sensor detected value ωin by theblock 307. If it is determined not to perform the yaw rate correction,then input of the feedback control law to the block 315 is shut off (aswitching 316 in FIG. 13 is opened), an immediately preceding yaw ratedrift value is retained, and the value is subtracted from the angularvelocity sensor detected value ωin. To determine an estimated bodyposture with no slippage, as in the case where a free leg footposition/posture at landing is estimated in S2210 of FIG. 10, thedeformation amount of the deformation mechanism of the foot 22 (theelastic member 106 and the ground contact member (sole elastic member)71, the bag-shaped member 109, etc. shown in FIG. 3 and FIG. 4) isdetermined using a dynamic model (spring damper model or the like) ofthe deformation mechanism on the basis of a floor reaction forcedetected value and/or a floor reaction force of a desired gait. Then,the estimated body posture with no slippage may be determined, including(considering) the above deformation amount. Alternatively, a disturbanceobserver may be used on the basis of a motor current command or adetected value to estimate a load acting on a decelerator or a link, anddeformation of the decelerator or the link may be estimated on the basisof the estimated load so as to determine an estimated body posture withno slippage, including (considering) the deformation of the deceleratoror the link.

Further alternatively, an estimated body posture with no slippage may bedetermined by kinematics computation on the basis of at least a jointdisplacement of a desired gait and a compliance compensation amount(refer to Japanese Unexamined Patent Application Publication No.10-277969 previously proposed by the present applicant).

The above arrangements make it possible to determine estimatedslippage-free body postures with further improved accuracy.

Referring now to FIG. 13, processing of S2216 of FIG. 10 will beexplained in detail. In the processing of S2216, a difference between aprevious value of an inertial-navigation-like estimated body positionXinertestm and the aforesaid geometrically estimated body position isdetermined by a block 317, and a sum of a value obtained by multiplyinga temporal differential value of the above difference (or a variation inthe difference between control cycles) by a gain Kc and a value obtainedby multiplying the difference by a gain Kd is determined by a block 318,as shown in FIG. 13. In other words, the sum is determined from thedifference by PD control law as the feedback control law. Furthermore, adifference between the accelerometer detected value converted into aglobal coordinate system value, which is an output of the block 302, andan assumed gravitational acceleration G is determined by a block 319.Then, a value obtained by subtracting the above sum (the output of theblock 318) from the difference (the output of the block 319) by a block360 is subjected to second-order integration by a block 320 so as todetermine a new inertial-navigation-like estimated body positionXinertestm.

The gains Kc and Kd should be set to a small value or zero in asituation where a large error in a geometrically estimated body positiontends to be produced. If the area of contact between the bottom surfaceof the foot 22 of a supporting leg and a floor is small, then a largeerror results in a geometrically estimated body position. If, therefore,the area of contact between the bottom surface of the foot 22 of asupporting leg and a floor is small, then the gains Kc and Kd should beset to a small value or zero. Especially when the foot 22 is fully incontact with a floor (the “flat-footed”), the gains Kc and Kd should beset to larger values.

Thus, in a running mode, for example, correction gains Ka, Kb, Kc and Kdmay be set to large values while the full sole surface is in contactwith the ground and set to zero or substantially zero in the floatingperiod, as indicated by the graph of correction gain K shown in FIG.8(c). Although the graph of the correction gain K in FIG. 8(c) indicatesa trend of change in magnitude of Ka, Kb, Kc and Kd, the graph does notshow precise values. In FIG. 8(c), the correction gains have beenstandardized such that the maximum value of the correction gain K is 1.Hence, K may be considered to mean a restrictor (damper) of thecorrection gains Ka, Kb, Kc and Kd.

In the present embodiment, an estimated body posture has been correctedon the basis of an estimated body posture error calculated according toexpression 42 or expression 43 shown above. Alternatively, however, anestimated body posture may be directly corrected on the basis of ahorizontal component of an estimated gravitational acceleration errorwithout using expression 42 and expression 43. In other words,expression 44 given below may be used in place of expression 43.Horizontal component of estimated gravitational accelerationerror=−Estimated body posture error angle*Gravitationalacceleration  Expression 44

To add more explanation of the setting of the gain Ka, in the floatingperiod, whatever value an estimated body posture error takes, the entirerobot 1 behaves as if it were in a weightless state as observed from acoordinate system in a parabolic motion together with the robot 1, sothat outputs of the accelerometer are not influenced by errors inestimated body postures. For this reason, an estimated gravitationalacceleration and an assumed gravitational acceleration alwayssubstantially agree with each other if a condition (hereinafter referredto as “condition A”) in which detection accuracy of the accelerometer ishigh, the actual robot 1 exhibits high performance of following adesired gait, rigidity of the robot 1 is high, and parameters of a robotdynamic model used for generating desired gaits substantially agree withthe actual robot 1 is satisfied. Strictly speaking, an estimatedgravitational acceleration and an assumed gravitational accelerationdeviate from true values by the same amount according to an estimatedbody posture error. As a result, estimated gravitational accelerationsand assumed gravitational accelerations always substantially agree witheach other. Essentially, therefore, it is impossible to estimate anygravitational directions in a floating period. However, since estimatedgravitational accelerations and assumed gravitational accelerationsalways substantially agree with each other, the estimated body postureerror at that moment is substantially zero. Hence, even if the gain Kais not set to a small value, a correction amount determined bymultiplying an estimated body posture error by the gain Ka will be alsosubstantially zero, being less likely to exert considerably adverseinfluences on estimated body postures.

If the aforesaid condition A is satisfied, the accuracy of alow-frequency component (DC component) of an estimated body posturerather increases in some cases by holding the gain Ka constant. This isbecause, as described above, according to a construction adapted to makea correction so as to reduce a value obtained by integrating a valuemultiplied by the gain Ka to zero, the gain Ka held at a constant valuetheoretically works to set a long-time mean value of a horizontalcomponent of an estimated gravitational acceleration error to zero, andif an estimated body posture error is zero, then the long-time meanvalue of the horizontal component of an estimated gravitationalacceleration error is theoretically zero. Normally, however, it isdifficult to satisfy the condition A, so that the gain Ka is desirablyset as shown in FIG. 8(c).

As an alternative, the value of the correction gain Ka, Kb, Kc or Kd maybe determined using a stationary Kalman filter technique or anonstationary Kalman filter technique. However, in the robot 1 accordingto the present embodiment, properties of system noises (disturbance) andobservation noises do not fully satisfy prerequisites of the Kalmanfilters especially during travel, so that satisfactory effect is notnecessarily produced.

The following is a complementary explanation of the posture rotationalcenter determined in the present embodiment. During a period in whichone of the legs 2 is in contact with the ground and a sufficiently largefloor reaction force is being generated, a posture rotational center isconsidered to lie in a so-called supporting polygon (a smallest convexpolygon including a ground contact surface, a range allowing ZMP to betherein, or a range allowing a total floor reaction force central pointto be therein).

The following described a reason for the above. If a posture rotationalcenter lies outside a supporting polygon, then every point on the bottomsurface of the foot 22 will be relatively moving with respect to afloor, so that kinetic friction acts on every point of contact betweenthe bottom surface of the foot 22 and the floor. The kinetic frictionremains at a constant value even when the robot 1 moves the leg 2 tocontrol a floor reaction force, and therefore cannot be controlled to anarbitrary value. This is identical to a state in which the robot 1 canhardly walk on slippery ice. Therefore, if the robot 1 is stably movingwhile controlling floor reaction forces, it is considered that staticfriction is acting in a certain region between the bottom surface of thefoot 22 and the floor, preventing slippage. In other words, a posturerotational center is considered to lie in a supporting polygon.Complementarily, if the foot 22 of the robot 1 is completely rigid, thenslippage would take place at every contact point other than the posturerotational central point. However, the bottom surface of the actual foot22 is formed of an elastic member, such as rubber, so that it isconsidered that slippage does not occur even in the vicinity of theposture rotational center.

In the floating period, the robot is considered to performperturbational motion about the center of gravity.

In a period other than the above, namely, in a period in which one ofthe legs 2 is in contact with the ground although a sufficient floorreaction force has not yet been produced, the posture rotational centeris considered to exist between a supporting polygon and the position ofa total center of gravity (or a position of a representative point ofthe body) when motional continuity is taken into account.

Based on the above consideration, more generally, the posture rotationalcenter to be determined in S2204 of FIG. 10 described above ispreferably one of the following. At current time t;

-   a) Desired ZMP,-   b) Actual ZMP (specifically, an actual floor reaction force central    point or a pressure central point of floor reaction force),-   c) Predetermined point, e.g., origin, of a supporting leg coordinate    system,-   d) Total center of gravity,-   e) Representative point of the body-   f) Internally dividing point of a plurality of one of the above

In a period wherein one leg is in contact with the ground and asufficiently large floor reaction force has been generated, the posturerotational center should be set in a supporting polygon. To be morespecific, the posture rotational center may be set to a) and b) shownabove. Alternatively, a predetermined point mentioned in c) above may beset such that the posture rotational center is included in a supportingpolygon. For instance, the posture rotational center may be set at theorigin (normally the bottom of an ankle joint) of a supporting legcoordinate system.

In a floating period, the posture rotational center should be setaccording to d) above. The position of a total center of gravity ispresent near the position of a representative point of the body, so thatit may be set according to e).

In a period other than those described above, namely, during a periodwherein one leg 2 is in contact with the ground, but a sufficientlyfloor reaction force has not yet been produced, setting should be madeas per f).

Furthermore, considering the continuity of motion over all periods, theposture rotational central point is preferably set to exhibit acontinuous change.

At any rate, at almost every moment, it is desirable to set posturerotational central points on a surface of or inside a smallest convexitythat includes the entire robot 1.

In the embodiment explained above, the accelerometer and/or the gyrosensor are installed on the body 3; however, they may alternatively bemounted on (incorporated in) other part, such as the head 4. If there isa neck joint between the head 4 and the body 3, detected values of theaccelerometer and/or the gyro sensor are converted into theaccelerations and angular accelerations of a representative point of thebody by kinematics computation on the basis of displacement commands(desired displacements) or detected displacement values of the neckjoint, and the rest may be accomplished by estimating self positions, asin the above embodiments.

When joint displacements are used to determine estimated supporting legcoordinate systems and geometrically estimated body positions, the jointdisplacements were the joint displacements of desired gaits or jointdetected displacement values. Alternatively, the joint displacements maybe weighted averages. The weight for this purpose may be frequencycharacteristics.

Estimated positions/postures, such as estimated supporting legcoordinate systems and estimated body positions/postures, may beexpressed in terms of perturbations from desired positions/posturesinstead of expressing them by using global coordinate systems asreferences, as in the aforesaid embodiment.

In the above embodiment, as shown in FIG. 13, an estimated body postureangular error in a global coordinate system has been determined on thebasis of an estimated gravitational acceleration in a global coordinatesystem, and a value obtained by multiplying the estimated body postureangular error in the global coordinate system by the gain Kb isadditionally supplied to the integrator (the block 310 shown in FIG. 13)that integrates the global body angular velocity ωgl so as to correctthe estimated body posture. In other words, estimated body postures havebeen corrected in global coordinate systems; however, they mayalternatively be corrected on local coordinate systems (coordinatesystems fixed to the body 3) of the gyro sensor. More specifically, inFIG. 13, the block 309 of the gain Kb and an adder (the block 308) thatsubtracts an output of the block 309 from the global body angularvelocity ωgl may be deleted, and the integrator Ka/S (the block 306) maybe replaced by Ka/S+Kb, namely, a block of PI control law.

In principle, Kb would not lead to poor convergence of an inclinationdrift in turning (including the turning on the spot) with a high yawrate even if a correction is made using a local coordinate system, asdescribed above.

To correct an estimated body posture, an estimated gravitationalacceleration may be determined by subtracting a body acceleration of adesired gait from an accelerometer detected value converted into aglobal coordinate system value in place of determining the estimatedgravitational acceleration by subtracting a geometrically estimated bodyacceleration from an accelerometer detected value converted into aglobal coordinate system value.

In an actual operation, when a robot is about to move according to adesired gait, a posture rotation about a posture rotational center isgenerated, so that the posture rotation causes a body acceleration todeviate from the desired gait. However, a posture inclination in theposture rotation remains zero on the average even if longitudinal orlateral shakes occur. Furthermore, the direction of spin in posturerotation is reversed for each step, so that the spin is close to zero onthe average. Therefore, except for those forces, such as a centrifugalforce, that act substantially in the same direction regardless of therotational direction of posture rotation, positive influences andnegative influences on the body acceleration caused by posture rotationscancel each other. As a result, the influences will be substantiallyzero in the long term. The “long term” here refers to a period of timenot less than the stabilization time of correcting an estimated bodyposture.

Thus, there will not be marked deterioration of correcting effect evenif body accelerations of desired gaits are used instead of geometricallyestimated body accelerations to correct estimated body postures.

As explained above, in the aforesaid embodiment, estimated bodypositions (inertial-navigation-like estimated body position) andestimated body postures are determined by inertial navigation, and theinertial-navigation-like estimated body positions and estimated bodypostures are corrected using geometrically estimated body positions.This makes it possible to accurately estimate self positions/postures,and landing positions and directions (positions and directions ofestimated supporting leg coordinate systems) of the robot 1.

INDUSTRIAL APPLICABILITY

As described above, the present invention is useful, providing atechnology that makes it possible to accurately estimate a posture of apredetermined part, such as a body, of a leg type moving robot, such asa bipedal moving robot.

1. A system for estimating a self posture of a leg type moving robotcontrolled to follow a determined desired gait, comprising: a postureangular velocity detecting means for detecting or estimating an actualposture angular velocity of a predetermined part of the robot; anaccelerometer mounted on the robot; a motional acceleration estimatingmeans for determining an estimated motional acceleration as an estimatedvalue of an acceleration of the accelerometer itself that is generatedby a motion of the robot by using a motional state amount of the robotthat includes at least one of a desired motion of the desired gait, adetected displacement value of a joint of the robot, and a desireddisplacement value of the joint; and a posture estimating means forestimating an actual posture of the predetermined part on the basis ofat least a detected acceleration value by the accelerometer, theestimated motional acceleration, and the detected or estimated actualposture angular velocity.
 2. A system for estimating a self posture of aleg type moving robot controlled to follow a determined desired gait,comprising: an accelerometer mounted on the robot; a posture angularvelocity detecting means for detecting or estimating an actual postureangular velocity of a predetermined part of the robot; a postureestimating means for determining an estimated posture angle value as anestimated value of an actual posture of the predetermined part on thebasis of at least the detected or estimated actual posture angularvelocity; a posture rotational error calculating means for determining atemporal variation of a posture rotational error as a posture rotationalerror variation, the posture rotational error variation indicating adifference between the estimated posture angle value and a desiredposture angle of the predetermined part in the desired gait; arotational center determining means for determining a rotational centerof a change in the posture rotational error; and a motional accelerationestimating means for determining an estimated motional acceleration asan estimated value of an acceleration of the accelerometer itselfgenerated by a motion of the robot, assuming that the robot rotatesabout the rotational center with the posture rotational error variation,wherein the posture estimating means determines the estimated postureangle value while correcting it on the basis of at least a detectedacceleration value by the accelerometer and the estimated motionalacceleration.
 3. The system for estimating a self posture of a leg typemoving robot according to claim 2, wherein the motional accelerationestimating means comprises a means for determining a second coordinatesystem formed by rotating a first coordinate system, which is acoordinate system describing the desired gait, about the rotationalcenter by the posture rotational error variation, and the estimatedmotional acceleration is determined such that an acceleration of theaccelerometer itself observed from the first coordinate system that isdetermined from at least one of a desired motion of the desired gait, adetected displacement value of a joint of the robot, and a desireddisplacement value of the joint, and an acceleration of theaccelerometer itself when the accelerometer moving at the estimatedmotional acceleration is observed from the second coordinate system arethe same.
 4. The system for estimating a self posture of a leg typemoving robot according to claim 1, wherein the posture estimating meanscomprises: an integrating means for determining an estimated postureangle value as an estimated value of an actual posture of thepredetermined part by integrating an input that includes at least adetected value of the posture angular velocity; a posture angle errorestimating means for estimating an error of the estimated posture anglevalue on the basis of a difference between a detected acceleration valueby the accelerometer and the estimated motional acceleration; and aninput correcting means for correcting an input of the integrating meansso as to bring the estimated error close to zero.
 5. The system forestimating a self posture of a leg type moving robot according to claim1, wherein the predetermined part is a body of the robot.
 6. The systemfor estimating a self posture of a leg type moving robot according toclaim 2, wherein the estimated posture angle value corrected by theposture estimating means is an estimated value of an inclination angleof the predetermined part relative to a vertical direction.
 7. Thesystem for estimating a self posture of a leg type moving robotaccording to claim 2, wherein the posture estimating means comprises: anintegrating means for determining an estimated posture angle value as anestimated value of an actual posture of the predetermined part byintegrating an input that includes at least a detected value of theposture angular velocity; a posture angle error estimating means forestimating an error of the estimated posture angle value on the basis ofa difference between a detected acceleration value by the accelerometerand the estimated motional acceleration; and an input correcting meansfor correcting an input of the integrating means so as to bring theestimated error close to zero.
 8. The system for estimating a selfposture of a leg type moving robot according to claim 3, wherein theposture estimating means comprises: an integrating means for determiningan estimated posture angle value as an estimated value of an actualposture of the predetermined part by integrating an input that includesat least a detected value of the posture angular velocity; a postureangle error estimating means for estimating an error of the estimatedposture angle value on the basis of a difference between a detectedacceleration value by the accelerometer and the estimated motionalacceleration; and an input correcting means for correcting an input ofthe integrating means so as to bring the estimated error close to zero.9. The system for estimating a self posture of a leg type moving robotaccording to claim 2, wherein the predetermined part is a body of therobot.